package com.ruoyi.crm.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.translation.annotation.Translation;
import com.ruoyi.common.translation.constant.TransConstant;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.util.Date;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 商机管理业务对象
 *
 * @author ruoyi
 * @date 2025-07-10
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class CrmProspectInfoBo extends BaseEntity {

    /**
     * 商机ID
     */
    @NotNull(message = "商机ID不能为空", groups = { EditGroup.class })
    private Long prospectId;

    /**
     * 阶段
     */
    private String stage;

    /**
     * 客户ID
     */
    @NotNull(message = "客户ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long customerId;

    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long userId;

    /**
     * 商机产品表ID
     */
    @NotNull(message = "商机产品表ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long prospectProductId;

    /**
     * 项目确认方式ID
     */
    @NotNull(message = "项目确认方式ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long projectApproveId;

    /**
     * 联系人ID
     */
    @NotNull(message = "联系人ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long contactId;

    /**
     * 产品需求(1.派遣外包,2.政务服务,3.财税服务,4.培训服务,5.管理咨询,6.档案服务,7.活动会展,8.招聘服务)
     */
    @NotBlank(message = "产品需求(1.派遣外包,2.政务服务,3.财税服务,4.培训服务,5.管理咨询,6.档案服务,7.活动会展,8.招聘服务)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String productRequirement;

     @Translation(type = TransConstant.DICT_TYPE_TO_LABEL,mapper = "productRequirement",other = "crm_product_need")
     private String productRequirementName;

    /**
     * 审核状态
     */
    @NotBlank(message = "审核状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String reviewStatus;

    /**
     * 商机名称
     */
    @NotBlank(message = "商机名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String prospectName;

    /**
     * 产品详细
     */
    @NotBlank(message = "产品详细不能为空", groups = { AddGroup.class, EditGroup.class })
    private String productDetails;

    /**
     * 价格
     */
    @NotNull(message = "价格不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long price;

    /**
     * 招聘价格
     */
    @NotNull(message = "招聘价格不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long recruitPrice;

    /**
     * 商机状态
     */
    @NotBlank(message = "商机状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String opportunityStatus;

    /**
     * 变更状态
     */
    @NotBlank(message = "变更状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String changeStatus;

    /**
     * 小节点
     */
    @NotBlank(message = "小节点不能为空", groups = { AddGroup.class, EditGroup.class })
    private String smallNode;

    /**
     * 节点内容
     */
    @NotBlank(message = "节点内容不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nodeContent;

    /**
     * 下次联系时间
     */
    @NotNull(message = "下次联系时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date nextTime;

    /**
     * 预计成交时间
     */
    @NotNull(message = "预计成交时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date estimatedTime;

    /**
     * 预计完成时间
     */
    @NotNull(message = "预计完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date overTime;

    /**
     * 文件上传地址
     */
    @NotBlank(message = "文件上传地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String url;

    /**
     * 文件原名
     */
    @NotBlank(message = "文件原名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String originalName;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
